<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>

    var arr1 = [1, 2, 3, 45, 2, 3, 465, 789]

    // 1.数组去重
    var arr2 = [...new Set(arr1)]
    console.log(arr2);

    // 2.求交集
    var arr3 = [1, 5, 2, 56, 45]

    // 两个数组先去重再求交集

    // var res=[...new Set(arr1)].filter(item=>{
    //   // 将arr3转化成set数据
    //   var s1=new Set(arr3)
    //   // 判断s1中是否有arr1中的值
    //   if(s1.has(item)){
    //     return true
    //   }else{
    //     return false
    //   }
    // })
    var res = [...new Set(arr1)].filter(item => new Set(arr3).has(item))
    console.log(res);

    // 3.求并集
    var arr4 = [1, 2, 45, 6, 2, 3]
    var res1 = [...new Set([...arr1, ...arr4])]
    console.log(res1);

    // 4.差集（以A为主体，差集为A中独有的）
    // arr1 arr3 arr1中的元素在arr3中也有的返回fasle,否则返回true
    var res2 = [...new Set(arr1)].filter(item => !(new Set(arr3).has(item)))
    console.log(res2);
  </script>
</body>

</html>